class Person(object):
    # 定义静态属性
    name = 'xiaohuang'

    # 定义动态属性
    def __init__(self):
        """__init__是类的初始化方法"""
        self.age = '18'

    # 定义普通方法
    def foot(self):
        """至少有一个self参数"""
        print('这是我的脚,普通方法实现')

    # 定义类方法，由classmethod装饰器实现
    @classmethod
    def class_hand(cls):
        """至少有一个cls参数"""
        print('这是我的手，由类方法实现')

    # 定义静态方法，由staticmethod实现
    @staticmethod
    def static_mouth():
        """无默认参数"""
        print('这是我的嘴，由静态方法实现')


if __name__ == '__main__':
    # 获取静态属性
    # 方法1，直接调用
    print('静态属性:', Person.name)
    # 方法2，实例化后再调用
    person = Person()
    print('静态属性:', person.name)

    # 获取动态属性
    person = Person()
    print('动态属性:', person.age)

    # 调用普通方法
    person = Person()
    person.foot()

    # 调用类方法
    # 方法1，直接调用
    Person.class_hand()
    # 方法2，实例化后再调用
    person = Person()
    person.class_hand()

    # 调用静态方法
    # 方法1，直接调用
    Person.static_mouth()
    # 方法2，实例化后再调用
    person = Person()
    person.static_mouth()
